Product file upload
Allow customers to upload one or multiple files directly into the cart submission. The block works as either a standard button+filename display or an interactive dropzone.
Related: Need to add fees for file uploads? See Custom Option Fees.
Configuration steps
- Add Product file upload to the product form.
- Choose a Line item property key and label (displayed above the field).
- Decide on layout:
- Dropzone: shows a large drag-and-drop target with helper text and a button to launch the file picker.
- Button: renders a simple button with filename text underneath.
- Optional settings:
- Allow multiple files.
- Restrict accepted file types/extensions (e.g.,
.png,.jpg,.pdf). - Adjust dropzone height, border radius, and text sizes to match your brand.
- Enable fees if uploading a file should add an additional SKU (for example, a digitizing service). The block shows the price next to the label.
- Use conditional logic if the upload should only appear after a particular selection, such as choosing a "Custom logo" option.
Shared features
All custom option blocks share these capabilities:
- Conditional display: Show or hide based on the value of another property using the Conditional logic settings. The block remains hidden and its inputs are disabled until the condition is met.
- Product tag filter: Limit to products with a specific tag using the Only show when product has tag setting.
- Width controls: Choose full or half width on tablet/desktop for easier layout mixing.
- Fee support: When paired with the optional Custom Option Fees script, specific selections can add a hidden product to the cart. Read more in Custom Option Fees.
How to name properties
- The Line item property key becomes the label in the cart and order details. Use plain text such as
Patch ColororEngraving. - Shopify automatically namespaces properties as
properties[Patch Color]behind the scenes; you only need to provide the key in the block settings. - Reuse the same property key across languages by translating the cart label in your locale files if needed.
Customer experience
- Files are uploaded with the add-to-cart request and accessible in the order timeline. The block warns shoppers when a required upload is missing and provides ARIA live regions for filenames and errors for screen readers.
Troubleshooting
- Confirm each property has a unique key before testing. Shopify overwrites duplicate property keys with the last value submitted.
- When fees are involved, preview the cart to ensure the correct fee product is added. Refer to Custom Option Fees for debugging tips.
- If a conditional block never appears, double-check the comparison value spelling—it compares lowercase, trimmed text behind the scenes.
See also: